package com.cskaoyan.javase.oop3.returnvaluetype4;

/**
 * @description: 方法体中怎么写？
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 当基本数据类型作为返回值类型的时候，在方法体中，去写这个返回值时
 * 1.基本类型:返回的是值，声明中写什么类型，就需要在方法体中写什么类型 和它可以提升的类型
 * 这里是存在类型提升的
 *
 * 2.引用类型
 * ​		类：其实返回的是该类或者该类子类的对象。
 * ​		抽象类：其实返回的是该类的子类对象
 * ​		接口：其实返回的是该接口的子类对象
 *
 */
public class Demo2 {
    public static void main(String[] args) {

    }

    public AbstractPerson2 test() {
        return new Person3();
    }

    public I2 test2() {
        return new IImpl2();
    }

    public Father2 test3() {
        //return new Father2();
        return new Son2();
    }


}

abstract class AbstractPerson2 {
}

class Person3 extends AbstractPerson2 {
}

interface I2 {
}

class IImpl2 implements I2 {
}

class Father2 {
}

class Son2 extends Father2 {
}
